package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.hr.vo.CompanyAdditionalFieldsListVO;

import javax.validation.Valid;
import java.util.List;

/**
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【员工信息】待入职的所有的参数")
@Data
public class EmpAllInfoDTO extends EmpInfoUpdateDTO {

    private static final long serialVersionUID = 1L;

    @Valid
    @ApiModelProperty(notes = "员工基本额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalBasicList;

    @Valid
    @ApiModelProperty(notes = "员工家庭成员")
    private List<EmpFamilyDTO> empFamilyList;

    @Valid
    @ApiModelProperty(notes = "员工家庭成员额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalFamilyList;

    @Valid
    @ApiModelProperty(notes = "员工奖惩记录信息")
    private List<EmpRewardPunishDTO> empRewardPunishList;

    @Valid
    @ApiModelProperty(notes = "员工奖惩记录信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalRewardPunishList;

//    @Valid
//    @ApiModelProperty(notes = "员工档案信息")
//    private List<EmpArchivesDTO> empArchivesList;

    @Valid
    @ApiModelProperty(notes = "员工工作经历")
    private List<EmpWorkDTO> empWorkList;

    @Valid
    @ApiModelProperty(notes = "员工工作经历额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalWorkList;

    @Valid
    @ApiModelProperty(notes = "员工联系人")
    private List<EmpContactsDTO> empContactsList;

    @Valid
    @ApiModelProperty(notes = "员工联系人额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalContactsList;

    @Valid
    @ApiModelProperty(notes = "员工合同信息")
    private List<EmpContractDTO> empContractList;

    @Valid
    @ApiModelProperty(notes = "员工合同额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalContractList;

    @Valid
    @ApiModelProperty(notes = "员工教育经历")
    private List<EmpEducationDTO> empEducationList;

    @Valid
    @ApiModelProperty(notes = "员工教育经历额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalEducationList;

    @Valid
    @ApiModelProperty(notes = "员工证件信息")
    private List<EmpCardDTO> empCardList;

    @Valid
    @ApiModelProperty(notes = "员工证件信息额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalCardList;

    @Valid
    @ApiModelProperty(notes = "员工培训记录")
    private List<EmpTrainDTO> empTrainList;

    @Valid
    @ApiModelProperty(notes = "员工培训记录额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalTrainList;


    @Valid
    @ApiModelProperty(notes = "员工证书")
    private List<EmpCertificateDTO> empCertificateList;

    @Valid
    @ApiModelProperty(notes = "员工证书额外信息")
    private List<EmpAdditionalFieldsUpdateDTO> empAdditionalCertificateList;


    @ApiModelProperty(notes = "部门ID列表")
    private List<String> depIdList;

    @ApiModelProperty(notes = "岗位ID列表")
    private List<String> positionIdList;

    @Valid
    @ApiModelProperty(notes = "纸质合同信息")
    private List<EmpPaperContractDTO> empPaperContractList;

    @ApiModelProperty(notes = "基本信息额外信息")
    private List<CompanyAdditionalFieldsListVO> companyAdditionalFieldsListBasicVOList;

    @ApiModelProperty(notes = "联系信息额外信息")
    private List<CompanyAdditionalFieldsListVO> companyAdditionalFieldsListContactVOList;

    @ApiModelProperty(notes = "附件额外信息")
    private List<CompanyAdditionalFieldsListVO> companyAdditionalFieldsListAttachmentVOList;

    @ApiModelProperty(notes = "员工档案资料额外信息")
    private List<CompanyAdditionalFieldsListVO> companyAdditionalFieldsListArchiveVOList;

    @ApiModelProperty(notes = "员工离职资料")
    private List<CompanyAdditionalFieldsListVO> companyAdditionalFieldsListLeaveOfficeVOList;
}

